home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 005 / tss15.arc / TSSFUNCT.PRG < prev    next >
Encoding:
Text File  |  1986-03-17  |  8.0 KB  |  393 lines

  1. *****************************************************************************
  2. *
  3. * TSSFUNCT.PRG
  4. *
  5. * Time Sheet System (TSS) Function Library
  6. *
  7. * 07/85  aj sieker
  8. * updated 03/14/86 ajs
  9. *
  10. *****************************************************************************
  11. *****************************************************************************
  12. *
  13. * browse routine for up to 4 fields  
  14. *
  15. *
  16. * usage :     x=brow('field1','field2','field3','field4')
  17. *
  18. * fields not used should be nulls, (' ', a single space).
  19. *
  20. * possible fields are CONTRACT, EMPL_NO, DEPT, LAST_NAME, FIRST_NAME, HOURS
  21. *
  22. * the first field name (field1) passed is the key field (indexed on)
  23. * and will be used with the SEEK command 
  24. *
  25. * field4, when used, is assumed to be a numeric field 
  26. *
  27. *****************************************************************************
  28. *****************************************************************************
  29. *
  30. PROCEDURE BROW
  31.  
  32. PARAMETERS F1,F2,F3,F4
  33.  
  34. SET DELETED OFF
  35. ROW=0
  36. ROW_TOP=3
  37. ROW_BOTT=21
  38. REC_PAGE=ROW_BOTT-ROW_TOP
  39. REC_TOP=0
  40. REC_BOTT=0
  41. COMMLINE='PgUp, PgDn, <S>eek, <E>dit, <A>dd, <Q>uit, (cursor keys)'
  42. CLEAR
  43. DO CASE
  44.    CASE F1=' '
  45.         RETURN
  46.    CASE F2=' '
  47.         DISPLINE="&F1"
  48.         FC=1
  49.    CASE F3=' '
  50.         DISPLINE="&F1+' '+&F2"
  51.         FC=2
  52.    CASE F4=' '
  53.         DISPLINE="&F1+' '+&F2+' '+&F3"
  54.         FC=3
  55.    OTHERWISE
  56.         DISPLINE="&F1+' '+&F2+' '+&F3+' '+STR(&F4,5,1)"
  57.         FC=4
  58. ENDCASE
  59.  
  60. M_BF1=SPACE(LEN(&F1))
  61. IF FC>1
  62.    M_BF2=SPACE(LEN(&F2))
  63.    IF FC>2
  64.       M_BF3=SPACE(LEN(&F3))
  65.       IF FC>3
  66.          M_BF4=0.0
  67.       ENDIF
  68.    ENDIF
  69. ENDIF
  70.  
  71. * define special keys (cursor movement, etc)
  72. *
  73. M_PGUP=18
  74. M_PGDN=3
  75. M_UP=5    && CURSOR
  76. M_DN=24   && CURSOR
  77. M_HOME=1
  78. M_DEL=21  && CTRL-U
  79.  
  80. SEL=' '
  81. MAX_ROW=22
  82. @ 1,0 SAY 'Rec '
  83. @ 1,40 SAY 'Time Sheet System Browse Mode'
  84. COL=1
  85.  
  86. * display field names - truncate to field width
  87. *
  88. @ 2,COL SAY SUBS(F1,1,LEN(&F1))
  89. COL=COL+1+LEN(&F1)
  90. IF FC>1
  91.    @ 2,COL SAY SUBS(F2,1,LEN(&F2))
  92.    COL=COL+1+LEN(&F2)
  93.    IF FC>2
  94.       @ 2,COL SAY SUBS(F3,1,LEN(&F3))
  95.       COL=COL+1+LEN(&F3)
  96.       IF FC>3
  97.          @ 2,COL SAY F4
  98.       ENDIF
  99.    ENDIF
  100. ENDIF
  101. DO BROWPAGE
  102. @ 24,0 SAY COMMLINE
  103. KEY=0
  104. DO WHILE SEL#'Q' .AND. KEY#27
  105.    @ 1,4 SAY RECNO() PICT '99999'
  106.    KEY=0
  107.    DO WHILE KEY=0
  108.       KEY=INKEY()
  109.    ENDDO
  110.    SEL=UPPER(CHR(KEY))
  111.    DO CASE
  112.       CASE SEL='F' .OR. KEY=M_DN .OR. KEY=50
  113.            DO BROWDOWN
  114.       CASE SEL='R' .OR. KEY=M_UP .OR. KEY=56
  115.            DO BROWUP
  116.       CASE SEL='S'
  117.            DO BROWSEEK
  118.       CASE SEL='E'
  119.            DO BROWEDIT
  120.       CASE SEL='U' .OR. KEY=M_DEL
  121.            DO BROWDEL
  122.       CASE KEY=M_PGUP .OR. KEY=51
  123.            DO BROWPGUP
  124.       CASE KEY=M_PGDN .OR. KEY=57
  125.            DO BROWPGDN
  126.       CASE KEY=M_HOME .OR. KEY=55
  127.            DO BROWHOME
  128.       CASE SEL='A'
  129.            DO BROWADD
  130.    ENDCASE
  131. ENDDO
  132. SET DELETED ON
  133.  
  134. RETURN
  135. *
  136. *****************************************************************************
  137. *****************************************************************************
  138. *
  139. PROCEDURE BROWPAGE
  140.  
  141. REC_TOP=RECNO()
  142. @ ROW_TOP-1,0 SAY ''
  143. ROW=ROW_TOP
  144. IF DELETED()
  145.    ? '*'
  146. ELSE
  147.    ? ' '
  148. ENDIF
  149. ?? &DISPLINE
  150. DO WHILE ROW<ROW_BOTT .AND. .NOT. EOF()
  151.    ROW=ROW+1
  152.    SKIP
  153.    IF DELETED()
  154.       ? '*'
  155.    ELSE
  156.       ? ' '
  157.    ENDIF
  158.    ?? &DISPLINE
  159. ENDDO
  160. REC_BOTT=RECNO()
  161. GOTO REC_TOP
  162. CNTR=ROW+1
  163. DO WHILE CNTR<=ROW_BOTT
  164.    ? SPACE(79)
  165.    CNTR=CNTR+1
  166. ENDDO
  167. ROW=ROW_TOP
  168. SET COLOR TO I
  169. DO BROWPUT
  170. SET COLOR TO
  171.  
  172. RETURN
  173. *
  174. *****************************************************************************
  175. *****************************************************************************
  176. *
  177. PROCEDURE BROWDOWN
  178.  
  179. DO BROWPUT
  180. IF ROW<ROW_BOTT .AND. .NOT. EOF()
  181.    SKIP
  182.    ROW=ROW+1
  183.    SET COLOR TO I
  184.    DO BROWPUT
  185.    SET COLOR TO
  186. ELSE
  187.    IF EOF()
  188.       SKIP -1
  189.    ENDIF
  190.    DO BROWPAGE
  191. ENDIF
  192.  
  193. RETURN
  194. *
  195. *****************************************************************************
  196. *****************************************************************************
  197. *
  198. PROCEDURE BROWUP
  199.  
  200. DO BROWPUT
  201. IF .NOT. BOF()
  202.    SKIP -1
  203.    ROW=ROW-1
  204.    IF ROW<ROW_TOP
  205.       DO BROWPAGE
  206.    ELSE 
  207.       SET COLOR TO I
  208.       DO BROWPUT
  209.       SET COLOR TO
  210.    ENDIF
  211. ENDIF
  212.  
  213. RETURN
  214. *
  215. *****************************************************************************
  216. *****************************************************************************
  217. *
  218. PROCEDURE BROWEDIT
  219.  
  220. @ 24,0 CLEAR
  221. @ 24,0 SAY '  ***   Now in EDIT mode   ***'
  222. @ ROW,1 GET &F1
  223. IF FC>1
  224.    @ ROW,COL()+1 GET &F2
  225.    IF FC>2
  226.       @ ROW,COL()+1 GET &F3
  227.       IF FC>3
  228.          @ ROW,COL()+1 GET &F4
  229.       ENDIF
  230.    ENDIF
  231. ENDIF
  232. READ
  233. @ 24,0 SAY COMMLINE
  234. DO BROWDOWN
  235.  
  236. RETURN
  237. *
  238. *****************************************************************************
  239. *****************************************************************************
  240. *
  241. PROCEDURE BROWPUT
  242.  
  243. @ ROW,1 SAY &F1
  244. IF FC>1
  245.    @ ROW,COL()+1 SAY &F2
  246.    IF FC>2
  247.       @ ROW,COL()+1 SAY &F3
  248.       IF FC>3
  249.          @ ROW,COL()+1 SAY &F4
  250.       ENDIF
  251.    ENDIF
  252. ENDIF
  253.  
  254. RETURN
  255. *
  256. *****************************************************************************
  257. *****************************************************************************
  258. *
  259. PROCEDURE BROWSEEK
  260.  
  261. REC=RECNO()
  262. SEEK_KEY=SPACE(LEN(&F1))
  263. @ 24,0 CLEAR
  264. @ 24,0 SAY 'Seek Key ' GET SEEK_KEY
  265. READ
  266. SEEK_KEY=TRIM(SEEK_KEY)
  267. SEEK SEEK_KEY
  268. IF EOF()
  269.    @ 24,0 CLEAR
  270.    @ 24,0 SAY 'Seek key '+SEEK_KEY+' not found !    Press a key to continue.'
  271.    DO WHILE INKEY()=0
  272.    ENDDO
  273.    GOTO REC
  274. ELSE
  275.    DO BROWPAGE
  276. ENDIF
  277. @ 24,0 CLEAR
  278. @ 24,0 SAY COMMLINE
  279.  
  280. RETURN
  281. *
  282. *****************************************************************************
  283. *****************************************************************************
  284. *
  285. PROCEDURE BROWPGUP
  286.  
  287. GOTO REC_TOP
  288. SKIP -(REC_PAGE)
  289. DO BROWPAGE
  290.  
  291. RETURN
  292. *
  293. *****************************************************************************
  294. *****************************************************************************
  295. *
  296. PROCEDURE BROWPGDN
  297.  
  298. GOTO REC_BOTT
  299. IF BOF()
  300.    SKIP -1
  301. ENDIF
  302. DO BROWPAGE
  303.  
  304. RETURN
  305. *
  306. *****************************************************************************
  307. *****************************************************************************
  308. *
  309. PROCEDURE BROWDEL
  310.  
  311. IF DELETED()
  312.    RECALL  
  313.    @ ROW,0 SAY ' '
  314. ELSE
  315.    DELETE
  316.    @ ROW,0 SAY '*'
  317. ENDIF
  318.  
  319. RETURN
  320. *
  321. *****************************************************************************
  322. *****************************************************************************
  323. *
  324. PROCEDURE BROWHOME
  325.  
  326. GOTO TOP
  327. DO BROWPAGE
  328.  
  329. RETURN
  330. *
  331. *****************************************************************************
  332. *****************************************************************************
  333. *
  334. PROCEDURE BROWADD
  335.  
  336. DO BROWPUT
  337. GOTO BOTT
  338. DO BROWPAGE
  339. @ 22,0 CLEAR
  340. @ 22,0 SAY 'Now at bottom of file - ready to add entry below. Blank to quit.'
  341. DO WHILE .T.
  342.    M_F1=SPACE(LEN(&F1))
  343.    @ 23,0 CLEAR
  344.    @ 23,1 GET M_F1
  345.    IF FC>1
  346.       M_F2=SPACE(LEN(&F2))
  347.       @ 23,COL()+1 GET M_F2
  348.       IF FC>2
  349.          M_F3=SPACE(LEN(&F3))
  350.          @ 23,COL()+1 GET M_F3
  351.          IF FC>3
  352.             M_F4=0.0
  353.             @ 23,COL()+1 GET M_F4 PICTURE '999.9'
  354.          ENDIF
  355.       ENDIF
  356.    ENDIF
  357.    READ
  358.    IF UPDATE()
  359.       APPEND BLANK
  360.       REPLACE &F1 WITH M_F1
  361.       IF FC>1
  362.          REPLACE &F2 WITH M_F2
  363.          IF FC>2
  364.             REPLACE &F3 WITH M_F3
  365.             IF FC>3
  366.                REPLACE &F4 WITH M_F4
  367.             ENDIF
  368.          ENDIF
  369.       ENDIF
  370.       @ ROW,0 SAY '+'
  371.       DO BROWPUT
  372.       ROW=ROW+1
  373.       IF ROW>ROW_BOTT
  374.          DO BROWPAGE
  375.          DO BROWPUT
  376.       ENDIF
  377.    ELSE
  378.       EXIT
  379.    ENDIF
  380. ENDDO
  381. @ 22,0 CLEAR
  382. DO BROWPAGE
  383. @ 24,0 SAY COMMLINE
  384.  
  385. RETURN
  386. *
  387. *****************************************************************************
  388. *****************************************************************************
  389. *
  390. * end of function BROW
  391. *
  392. *****************************************************************************
  393.